#pragma once

#include <arpa/inet.h>
#include <netinet/tcp.h>
#include <SocketOps.h>


/*
    note: socket常用封装如下
*/

class Socket
{
public:
    Socket(int fd);

    int fd();

    void close();

    void listen();

    int accept(sockaddr_in* peerAddr);

    void shutdownWrite();

    void setReusePort(bool on);

    void setReuseAddr(bool on);

    void setKeepAlive(bool on);

    void setTcpNoDelay(bool on);

    void bindAddr(const sockaddr_in &addr);

    ~Socket();

private:
    int sockfd_;
};